[INFO] cloning repository https://github.com/almirmujanovic/rtos-rust
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/almirmujanovic/rtos-rust" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Falmirmujanovic%2Frtos-rust", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Falmirmujanovic%2Frtos-rust'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] f13e2e34a265c60df05ee5467c26ba2ce72777fe
[INFO] fixing almirmujanovic/rtos-rust against try#622891a4e29178280638a6b63a8908bde2c0c854+cargoflags=-Zfix-edition=start=2015 for pr-157817-2
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Falmirmujanovic%2Frtos-rust" "/workspace/builds/worker-4-tc1/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-4-tc1/source'...
[INFO] [stderr] done.
[INFO] removed /workspace/builds/worker-4-tc1/source/.cargo/config.toml
[INFO] started tweaking git repo https://github.com/almirmujanovic/rtos-rust
[INFO] finished tweaking git repo https://github.com/almirmujanovic/rtos-rust
[INFO] tweaked toml for git repo https://github.com/almirmujanovic/rtos-rust written to /workspace/builds/worker-4-tc1/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/almirmujanovic/rtos-rust on toolchain 622891a4e29178280638a6b63a8908bde2c0c854
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+622891a4e29178280638a6b63a8908bde2c0c854" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/almirmujanovic/rtos-rust already has a lockfile, it will not be regenerated
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+622891a4e29178280638a6b63a8908bde2c0c854" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr]     Updating crates.io index
[INFO] [stderr]  Downloading crates ...
[INFO] [stderr]   Downloaded cortex-m-semihosting v0.5.0
[INFO] [stderr]   Downloaded spinning_top v0.2.5
[INFO] [stderr]   Downloaded panic-halt v0.2.0
[INFO] [stderr]   Downloaded volatile-register v0.2.2
[INFO] [stderr]   Downloaded rtic-core v0.3.1
[INFO] [stderr]   Downloaded cortex-m-rt-macros v0.7.5
[INFO] [stderr]   Downloaded aligned v0.3.5
[INFO] [stderr]   Downloaded as-slice v0.1.5
[INFO] [stderr]   Downloaded bitfield v0.13.2
[INFO] [stderr]   Downloaded generic-array v0.12.4
[INFO] [stderr]   Downloaded cortex-m-rtic-macros v0.5.3
[INFO] [stderr]   Downloaded generic-array v0.13.3
[INFO] [stderr]   Downloaded quote v1.0.41
[INFO] [stderr]   Downloaded rtic-syntax v0.4.0
[INFO] [stderr]   Downloaded cortex-m v0.6.7
[INFO] [stderr]   Downloaded cortex-m-rt v0.7.5
[INFO] [stderr]   Downloaded cortex-m v0.7.7
[INFO] [stderr]   Downloaded heapless v0.6.1
[INFO] [stderr]   Downloaded cortex-m-rtic v0.5.9
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc1/source:/opt/rustwide/workdir:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-m" "1610612736" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:3a6becf2bc8dde7f3fa57ede90e4f284e72d296796fc446bbb1e2c7cc0530151" "sleep" "infinity", kill_on_drop: false }`
[INFO] [stdout] 9b5075cca1f13620dc925473bba6bf023de5dbaab136b7f7b5b99e3d6da0645f
[INFO] running `Command { std: "docker" "start" "9b5075cca1f13620dc925473bba6bf023de5dbaab136b7f7b5b99e3d6da0645f", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-w" "/opt/rustwide/workdir" "--user" "0:0" "9b5075cca1f13620dc925473bba6bf023de5dbaab136b7f7b5b99e3d6da0645f" "/opt/rustwide/cargo-home/bin/cargo" "+622891a4e29178280638a6b63a8908bde2c0c854" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "9b5075cca1f13620dc925473bba6bf023de5dbaab136b7f7b5b99e3d6da0645f", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=" "-e" "RUSTDOCFLAGS=" "-w" "/opt/rustwide/workdir" "--user" "0:0" "9b5075cca1f13620dc925473bba6bf023de5dbaab136b7f7b5b99e3d6da0645f" "/opt/rustwide/cargo-home/bin/cargo" "+622891a4e29178280638a6b63a8908bde2c0c854" "fix" "--allow-no-vcs" "--allow-dirty" "--frozen" "--all" "--all-targets" "--message-format=json" "-Zfix-edition=start=2015", kill_on_drop: false }`
[INFO] [stderr]    Compiling typenum v1.19.0
[INFO] [stderr]    Compiling semver-parser v0.7.0
[INFO] [stderr]    Compiling proc-macro2 v1.0.101
[INFO] [stderr]    Compiling cortex-m v0.7.7
[INFO] [stderr]    Compiling quote v1.0.41
[INFO] [stderr]    Compiling unicode-ident v1.0.19
[INFO] [stderr]    Compiling generic-array v0.14.7
[INFO] [stderr]    Compiling indexmap v1.9.3
[INFO] [stderr]    Compiling syn v1.0.109
[INFO] [stderr]    Compiling semver v0.9.0
[INFO] [stderr]    Compiling hashbrown v0.12.3
[INFO] [stderr]    Compiling cortex-m v0.6.7
[INFO] [stderr]     Checking nb v1.1.0
[INFO] [stderr]    Compiling heapless v0.6.1
[INFO] [stderr]     Checking nb v0.1.3
[INFO] [stderr]     Checking stable_deref_trait v1.2.0
[INFO] [stderr]    Compiling rustc_version v0.2.3
[INFO] [stderr]     Checking void v1.0.2
[INFO] [stderr]     Checking vcell v0.1.3
[INFO] [stderr]     Checking volatile-register v0.2.2
[INFO] [stderr]     Checking embedded-hal v0.2.7
[INFO] [stderr]    Compiling cortex-m-rtic v0.5.9
[INFO] [stderr]    Compiling bare-metal v0.2.5
[INFO] [stderr]    Compiling cortex-m-rt v0.7.5
[INFO] [stderr]     Checking bitfield v0.13.2
[INFO] [stderr]    Compiling cortex-m-semihosting v0.5.0
[INFO] [stderr]     Checking generic-array v0.13.3
[INFO] [stderr]     Checking generic-array v0.12.4
[INFO] [stderr]    Compiling syn v2.0.106
[INFO] [stderr]     Checking byteorder v1.5.0
[INFO] [stderr]     Checking scopeguard v1.2.0
[INFO] [stderr]     Checking as-slice v0.1.5
[INFO] [stderr]     Checking hash32 v0.1.1
[INFO] [stderr]     Checking lock_api v0.4.14
[INFO] [stderr]     Checking spinning_top v0.2.5
[INFO] [stderr]     Checking rtic-core v0.3.1
[INFO] [stderr]     Checking linked_list_allocator v0.10.5
[INFO] [stderr]     Checking aligned v0.3.5
[INFO] [stderr]     Checking panic-halt v0.2.0
[INFO] [stderr]    Compiling rtic-syntax v0.4.0
[INFO] [stderr]    Compiling cortex-m-rt-macros v0.7.5
[INFO] [stderr]    Compiling cortex-m-rtic-macros v0.5.3
[INFO] [stderr]     Checking rtos-rust v0.1.0 (/opt/rustwide/workdir)
[INFO] [stdout] warning: unexpected `cfg` condition value: `qemu`
[INFO] [stdout]  --> src/arch/mod.rs:8:7
[INFO] [stdout]   |
[INFO] [stdout] 8 | #[cfg(feature = "qemu")]
[INFO] [stdout]   |       ^^^^^^^^^^^^^^^^ help: remove the condition
[INFO] [stdout]   |
[INFO] [stdout]   = note: no expected values for `feature`
[INFO] [stdout]   = help: consider adding `qemu` as a feature in `Cargo.toml`
[INFO] [stdout]   = note: see <https://doc.rust-lang.org/nightly/rustc/check-cfg/cargo-specifics.html> for more information about checking conditional configuration
[INFO] [stdout]   = note: `#[warn(unexpected_cfgs)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unexpected `cfg` condition value: `stm32`
[INFO] [stdout]   --> src/arch/mod.rs:11:7
[INFO] [stdout]    |
[INFO] [stdout] 11 | #[cfg(feature = "stm32")]
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^ help: remove the condition
[INFO] [stdout]    |
[INFO] [stdout]    = note: no expected values for `feature`
[INFO] [stdout]    = help: consider adding `stm32` as a feature in `Cargo.toml`
[INFO] [stdout]    = note: see <https://doc.rust-lang.org/nightly/rustc/check-cfg/cargo-specifics.html> for more information about checking conditional configuration
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unexpected `cfg` condition value: `qemu`
[INFO] [stdout]  --> src/arch/mod.rs:8:7
[INFO] [stdout]   |
[INFO] [stdout] 8 | #[cfg(feature = "qemu")]
[INFO] [stdout]   |       ^^^^^^^^^^^^^^^^ help: remove the condition
[INFO] [stdout]   |
[INFO] [stdout]   = note: no expected values for `feature`
[INFO] [stdout]   = help: consider adding `qemu` as a feature in `Cargo.toml`
[INFO] [stdout]   = note: see <https://doc.rust-lang.org/nightly/rustc/check-cfg/cargo-specifics.html> for more information about checking conditional configuration
[INFO] [stdout]   = note: `#[warn(unexpected_cfgs)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unexpected `cfg` condition value: `stm32`
[INFO] [stdout]   --> src/arch/mod.rs:11:7
[INFO] [stdout]    |
[INFO] [stdout] 11 | #[cfg(feature = "stm32")]
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^ help: remove the condition
[INFO] [stdout]    |
[INFO] [stdout]    = note: no expected values for `feature`
[INFO] [stdout]    = help: consider adding `stm32` as a feature in `Cargo.toml`
[INFO] [stdout]    = note: see <https://doc.rust-lang.org/nightly/rustc/check-cfg/cargo-specifics.html> for more information about checking conditional configuration
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0152]: duplicate lang item in crate `std` (which `test` depends on): `panic_impl`
[INFO] [stdout]   |
[INFO] [stdout]   = note: the lang item is first defined in crate `panic_halt` (which `rtos_rust` depends on)
[INFO] [stdout]   = note: first definition in `panic_halt` loaded from /opt/rustwide/target/debug/deps/libpanic_halt-a634983a93cea32c.rmeta
[INFO] [stdout]   = note: second definition in `std` loaded from /opt/rustwide/rustup-home/toolchains/622891a4e29178280638a6b63a8908bde2c0c854/lib/rustlib/x86_64-unknown-linux-gnu/lib/libstd-ebc3593764c44f83.rmeta
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] For more information about this error, try `rustc --explain E0152`.
[INFO] [stdout] 
[INFO] [stderr] error: could not compile `rtos-rust` (bin "rtos-rust" test) due to 1 previous error; 2 warnings emitted
[INFO] [stderr] warning: build failed, waiting for other jobs to finish...
[INFO] [stdout] warning[E0133]: call to unsafe function `arch::timer::init` is unsafe and requires unsafe block
[INFO] [stdout]   --> src/arch/mod.rs:20:5
[INFO] [stdout]    |
[INFO] [stdout] 20 |     timer::init();
[INFO] [stdout]    |     ^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]    |
[INFO] [stdout]    = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]   --> src/arch/mod.rs:15:1
[INFO] [stdout]    |
[INFO] [stdout] 15 | pub unsafe fn init() {
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout]    = note: `#[warn(unsafe_op_in_unsafe_fn)]` (part of `#[warn(rust_2024_compatibility)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `core::ptr::mut_ptr::<impl *mut T>::offset` is unsafe and requires unsafe block
[INFO] [stdout]   --> src/kernel/task.rs:34:10
[INFO] [stdout]    |
[INFO] [stdout] 34 |     sp = sp.offset(-1);
[INFO] [stdout]    |          ^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]    |
[INFO] [stdout]    = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]   --> src/kernel/task.rs:25:1
[INFO] [stdout]    |
[INFO] [stdout] 25 | pub unsafe fn init_task_stack(stack_top: *mut u8, task_fn: TaskFunction) -> *mut u32 {
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: dereference of raw pointer is unsafe and requires unsafe block
[INFO] [stdout]   --> src/kernel/task.rs:35:5
[INFO] [stdout]    |
[INFO] [stdout] 35 |     *sp = 0x01000000;  // xPSR (Thumb bit set - CRITICAL!)
[INFO] [stdout]    |     ^^^ dereference of raw pointer
[INFO] [stdout]    |
[INFO] [stdout]    = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `core::ptr::mut_ptr::<impl *mut T>::offset` is unsafe and requires unsafe block
[INFO] [stdout]   --> src/kernel/task.rs:37:10
[INFO] [stdout]    |
[INFO] [stdout] 37 |     sp = sp.offset(-1);
[INFO] [stdout]    |          ^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]    |
[INFO] [stdout]    = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: dereference of raw pointer is unsafe and requires unsafe block
[INFO] [stdout]   --> src/kernel/task.rs:38:5
[INFO] [stdout]    |
[INFO] [stdout] 38 |     *sp = task_fn as u32;  // PC (Program Counter) - where task starts
[INFO] [stdout]    |     ^^^ dereference of raw pointer
[INFO] [stdout]    |
[INFO] [stdout]    = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `core::ptr::mut_ptr::<impl *mut T>::offset` is unsafe and requires unsafe block
[INFO] [stdout]   --> src/kernel/task.rs:40:10
[INFO] [stdout]    |
[INFO] [stdout] 40 |     sp = sp.offset(-1);
[INFO] [stdout]    |          ^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]    |
[INFO] [stdout]    = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: dereference of raw pointer is unsafe and requires unsafe block
[INFO] [stdout]   --> src/kernel/task.rs:41:5
[INFO] [stdout]    |
[INFO] [stdout] 41 |     *sp = 0x00000000;  // LR (Link Register) - return address (not used)
[INFO] [stdout]    |     ^^^ dereference of raw pointer
[INFO] [stdout]    |
[INFO] [stdout]    = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `core::ptr::mut_ptr::<impl *mut T>::offset` is unsafe and requires unsafe block
[INFO] [stdout]   --> src/kernel/task.rs:43:10
[INFO] [stdout]    |
[INFO] [stdout] 43 |     sp = sp.offset(-1);
[INFO] [stdout]    |          ^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]    |
[INFO] [stdout]    = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: dereference of raw pointer is unsafe and requires unsafe block
[INFO] [stdout]   --> src/kernel/task.rs:44:5
[INFO] [stdout]    |
[INFO] [stdout] 44 |     *sp = 0x00000000;  // R12
[INFO] [stdout]    |     ^^^ dereference of raw pointer
[INFO] [stdout]    |
[INFO] [stdout]    = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `core::ptr::mut_ptr::<impl *mut T>::offset` is unsafe and requires unsafe block
[INFO] [stdout]   --> src/kernel/task.rs:46:10
[INFO] [stdout]    |
[INFO] [stdout] 46 |     sp = sp.offset(-1);
[INFO] [stdout]    |          ^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]    |
[INFO] [stdout]    = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: dereference of raw pointer is unsafe and requires unsafe block
[INFO] [stdout]   --> src/kernel/task.rs:47:5
[INFO] [stdout]    |
[INFO] [stdout] 47 |     *sp = 0x00000000;  // R3
[INFO] [stdout]    |     ^^^ dereference of raw pointer
[INFO] [stdout]    |
[INFO] [stdout]    = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `core::ptr::mut_ptr::<impl *mut T>::offset` is unsafe and requires unsafe block
[INFO] [stdout]   --> src/kernel/task.rs:49:10
[INFO] [stdout]    |
[INFO] [stdout] 49 |     sp = sp.offset(-1);
[INFO] [stdout]    |          ^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]    |
[INFO] [stdout]    = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: dereference of raw pointer is unsafe and requires unsafe block
[INFO] [stdout]   --> src/kernel/task.rs:50:5
[INFO] [stdout]    |
[INFO] [stdout] 50 |     *sp = 0x00000000;  // R2
[INFO] [stdout]    |     ^^^ dereference of raw pointer
[INFO] [stdout]    |
[INFO] [stdout]    = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `core::ptr::mut_ptr::<impl *mut T>::offset` is unsafe and requires unsafe block
[INFO] [stdout]   --> src/kernel/task.rs:52:10
[INFO] [stdout]    |
[INFO] [stdout] 52 |     sp = sp.offset(-1);
[INFO] [stdout]    |          ^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]    |
[INFO] [stdout]    = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: dereference of raw pointer is unsafe and requires unsafe block
[INFO] [stdout]   --> src/kernel/task.rs:53:5
[INFO] [stdout]    |
[INFO] [stdout] 53 |     *sp = 0x00000000;  // R1
[INFO] [stdout]    |     ^^^ dereference of raw pointer
[INFO] [stdout]    |
[INFO] [stdout]    = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `core::ptr::mut_ptr::<impl *mut T>::offset` is unsafe and requires unsafe block
[INFO] [stdout]   --> src/kernel/task.rs:55:10
[INFO] [stdout]    |
[INFO] [stdout] 55 |     sp = sp.offset(-1);
[INFO] [stdout]    |          ^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]    |
[INFO] [stdout]    = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: dereference of raw pointer is unsafe and requires unsafe block
[INFO] [stdout]   --> src/kernel/task.rs:56:5
[INFO] [stdout]    |
[INFO] [stdout] 56 |     *sp = 0x00000000;  // R0
[INFO] [stdout]    |     ^^^ dereference of raw pointer
[INFO] [stdout]    |
[INFO] [stdout]    = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `core::ptr::mut_ptr::<impl *mut T>::offset` is unsafe and requires unsafe block
[INFO] [stdout]   --> src/kernel/task.rs:59:10
[INFO] [stdout]    |
[INFO] [stdout] 59 |     sp = sp.offset(-1);
[INFO] [stdout]    |          ^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]    |
[INFO] [stdout]    = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: dereference of raw pointer is unsafe and requires unsafe block
[INFO] [stdout]   --> src/kernel/task.rs:60:5
[INFO] [stdout]    |
[INFO] [stdout] 60 |     *sp = 0x00000000;  // R11
[INFO] [stdout]    |     ^^^ dereference of raw pointer
[INFO] [stdout]    |
[INFO] [stdout]    = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `core::ptr::mut_ptr::<impl *mut T>::offset` is unsafe and requires unsafe block
[INFO] [stdout]   --> src/kernel/task.rs:62:10
[INFO] [stdout]    |
[INFO] [stdout] 62 |     sp = sp.offset(-1);
[INFO] [stdout]    |          ^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]    |
[INFO] [stdout]    = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: dereference of raw pointer is unsafe and requires unsafe block
[INFO] [stdout]   --> src/kernel/task.rs:63:5
[INFO] [stdout]    |
[INFO] [stdout] 63 |     *sp = 0x00000000;  // R10
[INFO] [stdout]    |     ^^^ dereference of raw pointer
[INFO] [stdout]    |
[INFO] [stdout]    = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `core::ptr::mut_ptr::<impl *mut T>::offset` is unsafe and requires unsafe block
[INFO] [stdout]   --> src/kernel/task.rs:65:10
[INFO] [stdout]    |
[INFO] [stdout] 65 |     sp = sp.offset(-1);
[INFO] [stdout]    |          ^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]    |
[INFO] [stdout]    = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: dereference of raw pointer is unsafe and requires unsafe block
[INFO] [stdout]   --> src/kernel/task.rs:66:5
[INFO] [stdout]    |
[INFO] [stdout] 66 |     *sp = 0x00000000;  // R9
[INFO] [stdout]    |     ^^^ dereference of raw pointer
[INFO] [stdout]    |
[INFO] [stdout]    = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `core::ptr::mut_ptr::<impl *mut T>::offset` is unsafe and requires unsafe block
[INFO] [stdout]   --> src/kernel/task.rs:68:10
[INFO] [stdout]    |
[INFO] [stdout] 68 |     sp = sp.offset(-1);
[INFO] [stdout]    |          ^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]    |
[INFO] [stdout]    = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: dereference of raw pointer is unsafe and requires unsafe block
[INFO] [stdout]   --> src/kernel/task.rs:69:5
[INFO] [stdout]    |
[INFO] [stdout] 69 |     *sp = 0x00000000;  // R8
[INFO] [stdout]    |     ^^^ dereference of raw pointer
[INFO] [stdout]    |
[INFO] [stdout]    = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `core::ptr::mut_ptr::<impl *mut T>::offset` is unsafe and requires unsafe block
[INFO] [stdout]   --> src/kernel/task.rs:71:10
[INFO] [stdout]    |
[INFO] [stdout] 71 |     sp = sp.offset(-1);
[INFO] [stdout]    |          ^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]    |
[INFO] [stdout]    = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: dereference of raw pointer is unsafe and requires unsafe block
[INFO] [stdout]   --> src/kernel/task.rs:72:5
[INFO] [stdout]    |
[INFO] [stdout] 72 |     *sp = 0x00000000;  // R7
[INFO] [stdout]    |     ^^^ dereference of raw pointer
[INFO] [stdout]    |
[INFO] [stdout]    = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `core::ptr::mut_ptr::<impl *mut T>::offset` is unsafe and requires unsafe block
[INFO] [stdout]   --> src/kernel/task.rs:74:10
[INFO] [stdout]    |
[INFO] [stdout] 74 |     sp = sp.offset(-1);
[INFO] [stdout]    |          ^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]    |
[INFO] [stdout]    = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: dereference of raw pointer is unsafe and requires unsafe block
[INFO] [stdout]   --> src/kernel/task.rs:75:5
[INFO] [stdout]    |
[INFO] [stdout] 75 |     *sp = 0x00000000;  // R6
[INFO] [stdout]    |     ^^^ dereference of raw pointer
[INFO] [stdout]    |
[INFO] [stdout]    = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `core::ptr::mut_ptr::<impl *mut T>::offset` is unsafe and requires unsafe block
[INFO] [stdout]   --> src/kernel/task.rs:77:10
[INFO] [stdout]    |
[INFO] [stdout] 77 |     sp = sp.offset(-1);
[INFO] [stdout]    |          ^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]    |
[INFO] [stdout]    = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: dereference of raw pointer is unsafe and requires unsafe block
[INFO] [stdout]   --> src/kernel/task.rs:78:5
[INFO] [stdout]    |
[INFO] [stdout] 78 |     *sp = 0x00000000;  // R5
[INFO] [stdout]    |     ^^^ dereference of raw pointer
[INFO] [stdout]    |
[INFO] [stdout]    = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `core::ptr::mut_ptr::<impl *mut T>::offset` is unsafe and requires unsafe block
[INFO] [stdout]   --> src/kernel/task.rs:80:10
[INFO] [stdout]    |
[INFO] [stdout] 80 |     sp = sp.offset(-1);
[INFO] [stdout]    |          ^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]    |
[INFO] [stdout]    = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: dereference of raw pointer is unsafe and requires unsafe block
[INFO] [stdout]   --> src/kernel/task.rs:81:5
[INFO] [stdout]    |
[INFO] [stdout] 81 |     *sp = 0x00000000;  // R4
[INFO] [stdout]    |     ^^^ dereference of raw pointer
[INFO] [stdout]    |
[INFO] [stdout]    = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `core::ptr::mut_ptr::<impl *mut T>::add` is unsafe and requires unsafe block
[INFO] [stdout]   --> src/kernel/scheduler.rs:18:22
[INFO] [stdout]    |
[INFO] [stdout] 18 |     let stack1_top = stack1_base.cast::<u8>().add(1024);
[INFO] [stdout]    |                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]    |
[INFO] [stdout]    = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]   --> src/kernel/scheduler.rs:14:1
[INFO] [stdout]    |
[INFO] [stdout] 14 | pub unsafe fn init_tasks() {
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `core::ptr::mut_ptr::<impl *mut T>::add` is unsafe and requires unsafe block
[INFO] [stdout]   --> src/kernel/scheduler.rs:19:22
[INFO] [stdout]    |
[INFO] [stdout] 19 |     let stack2_top = stack2_base.cast::<u8>().add(1024);
[INFO] [stdout]    |                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]    |
[INFO] [stdout]    = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: use of mutable static is unsafe and requires unsafe block
[INFO] [stdout]   --> src/kernel/scheduler.rs:21:5
[INFO] [stdout]    |
[INFO] [stdout] 21 |     TASKS[0] = Some(Task {
[INFO] [stdout]    |     ^^^^^ use of mutable static
[INFO] [stdout]    |
[INFO] [stdout]    = note: mutable statics can be mutated by multiple threads: aliasing violations or data races will cause undefined behavior
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `kernel::task::init_task_stack` is unsafe and requires unsafe block
[INFO] [stdout]   --> src/kernel/scheduler.rs:24:23
[INFO] [stdout]    |
[INFO] [stdout] 24 |         stackPointer: init_task_stack(stack1_top, task1),
[INFO] [stdout]    |                       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]    |
[INFO] [stdout]    = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: use of mutable static is unsafe and requires unsafe block
[INFO] [stdout]   --> src/kernel/scheduler.rs:30:5
[INFO] [stdout]    |
[INFO] [stdout] 30 |     TASKS[1] = Some(Task {
[INFO] [stdout]    |     ^^^^^ use of mutable static
[INFO] [stdout]    |
[INFO] [stdout]    = note: mutable statics can be mutated by multiple threads: aliasing violations or data races will cause undefined behavior
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `kernel::task::init_task_stack` is unsafe and requires unsafe block
[INFO] [stdout]   --> src/kernel/scheduler.rs:33:23
[INFO] [stdout]    |
[INFO] [stdout] 33 |         stackPointer: init_task_stack(stack2_top, task2),
[INFO] [stdout]    |                       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]    |
[INFO] [stdout]    = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: use of mutable static is unsafe and requires unsafe block
[INFO] [stdout]   --> src/kernel/scheduler.rs:48:28
[INFO] [stdout]    |
[INFO] [stdout] 48 |     let current_task_idx = CURRENT_TASK;
[INFO] [stdout]    |                            ^^^^^^^^^^^^ use of mutable static
[INFO] [stdout]    |
[INFO] [stdout]    = note: mutable statics can be mutated by multiple threads: aliasing violations or data races will cause undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]   --> src/kernel/scheduler.rs:44:1
[INFO] [stdout]    |
[INFO] [stdout] 44 | pub unsafe extern "C" fn PendSV_Handler() {
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: use of inline assembly is unsafe and requires unsafe block
[INFO] [stdout]   --> src/kernel/scheduler.rs:51:5
[INFO] [stdout]    |
[INFO] [stdout] 51 | /     asm!(
[INFO] [stdout] 52 | |         // Save current task context if not first run
[INFO] [stdout] 53 | |         "mrs r0, PSP",                    // Get Process Stack Pointer
[INFO] [stdout] 54 | |         "cbz r0, 2f",                     // Skip save if PSP is 0 (first run)
[INFO] [stdout] ...  |
[INFO] [stdout] 89 | |         options(noreturn)
[INFO] [stdout] 90 | |     );
[INFO] [stdout]    | |_____^ use of inline assembly
[INFO] [stdout]    |
[INFO] [stdout]    = note: inline assembly is entirely unchecked and can cause undefined behavior
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: dereference of raw pointer is unsafe and requires unsafe block
[INFO] [stdout]   --> src/kernel/scheduler.rs:72:41
[INFO] [stdout]    |
[INFO] [stdout] 72 |             if let Some(ref mut task) = (*tasks_ptr)[current_task_idx] {
[INFO] [stdout]    |                                         ^^^^^^^^^^^^ dereference of raw pointer
[INFO] [stdout]    |
[INFO] [stdout]    = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: dereference of raw pointer is unsafe and requires unsafe block
[INFO] [stdout]   --> src/kernel/scheduler.rs:81:37
[INFO] [stdout]    |
[INFO] [stdout] 81 |             if let Some(ref task) = (*tasks_ptr)[current_task_idx] {
[INFO] [stdout]    |                                     ^^^^^^^^^^^^ dereference of raw pointer
[INFO] [stdout]    |
[INFO] [stdout]    = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: use of mutable static is unsafe and requires unsafe block
[INFO] [stdout]   --> src/kernel/scheduler.rs:95:5
[INFO] [stdout]    |
[INFO] [stdout] 95 |     SCHEDULER_RUNNING = true;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^ use of mutable static
[INFO] [stdout]    |
[INFO] [stdout]    = note: mutable statics can be mutated by multiple threads: aliasing violations or data races will cause undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]   --> src/kernel/scheduler.rs:94:1
[INFO] [stdout]    |
[INFO] [stdout] 94 | pub unsafe fn start_scheduler() -> ! {
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: use of mutable static is unsafe and requires unsafe block
[INFO] [stdout]   --> src/kernel/scheduler.rs:96:5
[INFO] [stdout]    |
[INFO] [stdout] 96 |     CURRENT_TASK = 0;
[INFO] [stdout]    |     ^^^^^^^^^^^^ use of mutable static
[INFO] [stdout]    |
[INFO] [stdout]    = note: mutable statics can be mutated by multiple threads: aliasing violations or data races will cause undefined behavior
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: use of mutable static is unsafe and requires unsafe block
[INFO] [stdout]   --> src/kernel/scheduler.rs:99:5
[INFO] [stdout]    |
[INFO] [stdout] 99 |     TASKS[0].as_mut().unwrap().status = TaskStatus::Running;
[INFO] [stdout]    |     ^^^^^ use of mutable static
[INFO] [stdout]    |
[INFO] [stdout]    = note: mutable statics can be mutated by multiple threads: aliasing violations or data races will cause undefined behavior
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: use of mutable static is unsafe and requires unsafe block
[INFO] [stdout]    --> src/kernel/scheduler.rs:101:20
[INFO] [stdout]     |
[INFO] [stdout] 101 |     let first_sp = TASKS[0].as_ref().unwrap().stackPointer;
[INFO] [stdout]     |                    ^^^^^ use of mutable static
[INFO] [stdout]     |
[INFO] [stdout]     = note: mutable statics can be mutated by multiple threads: aliasing violations or data races will cause undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: use of inline assembly is unsafe and requires unsafe block
[INFO] [stdout]    --> src/kernel/scheduler.rs:105:5
[INFO] [stdout]     |
[INFO] [stdout] 105 | /     asm!(
[INFO] [stdout] 106 | |         // Switch to PSP
[INFO] [stdout] 107 | |         "mov r0, #2",                     // Use PSP, privileged mode
[INFO] [stdout] 108 | |         "msr CONTROL, r0",                // Set CONTROL register
[INFO] [stdout] ...   |
[INFO] [stdout] 123 | |         options(noreturn)
[INFO] [stdout] 124 | |     );
[INFO] [stdout]     | |_____^ use of inline assembly
[INFO] [stdout]     |
[INFO] [stdout]     = note: inline assembly is entirely unchecked and can cause undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: use of mutable static is unsafe and requires unsafe block
[INFO] [stdout]    --> src/kernel/scheduler.rs:138:9
[INFO] [stdout]     |
[INFO] [stdout] 138 |     if !SCHEDULER_RUNNING {
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^ use of mutable static
[INFO] [stdout]     |
[INFO] [stdout]     = note: mutable statics can be mutated by multiple threads: aliasing violations or data races will cause undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]    --> src/kernel/scheduler.rs:137:1
[INFO] [stdout]     |
[INFO] [stdout] 137 | pub unsafe fn task_yield() {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: use of mutable static is unsafe and requires unsafe block
[INFO] [stdout]    --> src/kernel/scheduler.rs:143:22
[INFO] [stdout]     |
[INFO] [stdout] 143 |     let next_task = (CURRENT_TASK + 1) % 2;
[INFO] [stdout]     |                      ^^^^^^^^^^^^ use of mutable static
[INFO] [stdout]     |
[INFO] [stdout]     = note: mutable statics can be mutated by multiple threads: aliasing violations or data races will cause undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: use of mutable static is unsafe and requires unsafe block
[INFO] [stdout]    --> src/kernel/scheduler.rs:144:21
[INFO] [stdout]     |
[INFO] [stdout] 144 |     if next_task != CURRENT_TASK {
[INFO] [stdout]     |                     ^^^^^^^^^^^^ use of mutable static
[INFO] [stdout]     |
[INFO] [stdout]     = note: mutable statics can be mutated by multiple threads: aliasing violations or data races will cause undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: use of mutable static is unsafe and requires unsafe block
[INFO] [stdout]    --> src/kernel/scheduler.rs:145:24
[INFO] [stdout]     |
[INFO] [stdout] 145 |         let old_task = CURRENT_TASK;
[INFO] [stdout]     |                        ^^^^^^^^^^^^ use of mutable static
[INFO] [stdout]     |
[INFO] [stdout]     = note: mutable statics can be mutated by multiple threads: aliasing violations or data races will cause undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: use of mutable static is unsafe and requires unsafe block
[INFO] [stdout]    --> src/kernel/scheduler.rs:146:9
[INFO] [stdout]     |
[INFO] [stdout] 146 |         CURRENT_TASK = next_task;
[INFO] [stdout]     |         ^^^^^^^^^^^^ use of mutable static
[INFO] [stdout]     |
[INFO] [stdout]     = note: mutable statics can be mutated by multiple threads: aliasing violations or data races will cause undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: dereference of raw pointer is unsafe and requires unsafe block
[INFO] [stdout]    --> src/kernel/scheduler.rs:150:9
[INFO] [stdout]     |
[INFO] [stdout] 150 |         (*tasks_ptr)[old_task].as_mut().unwrap().status = TaskStatus::Ready;
[INFO] [stdout]     |         ^^^^^^^^^^^^ dereference of raw pointer
[INFO] [stdout]     |
[INFO] [stdout]     = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: dereference of raw pointer is unsafe and requires unsafe block
[INFO] [stdout]    --> src/kernel/scheduler.rs:151:9
[INFO] [stdout]     |
[INFO] [stdout] 151 |         (*tasks_ptr)[next_task].as_mut().unwrap().status = TaskStatus::Running;
[INFO] [stdout]     |         ^^^^^^^^^^^^ dereference of raw pointer
[INFO] [stdout]     |
[INFO] [stdout]     = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `kernel::scheduler::trigger_pendsv` is unsafe and requires unsafe block
[INFO] [stdout]    --> src/kernel/scheduler.rs:156:9
[INFO] [stdout]     |
[INFO] [stdout] 156 |         trigger_pendsv();
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: dereference of raw pointer is unsafe and requires unsafe block
[INFO] [stdout]    --> src/kernel/scheduler.rs:163:5
[INFO] [stdout]     |
[INFO] [stdout] 163 |     *icsr |= 1 << 28; // Set PENDSVSET bit
[INFO] [stdout]     |     ^^^^^ dereference of raw pointer
[INFO] [stdout]     |
[INFO] [stdout]     = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]    --> src/kernel/scheduler.rs:161:1
[INFO] [stdout]     |
[INFO] [stdout] 161 | unsafe fn trigger_pendsv() {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: use of mutable static is unsafe and requires unsafe block
[INFO] [stdout]    --> src/kernel/scheduler.rs:170:5
[INFO] [stdout]     |
[INFO] [stdout] 170 |     TICK_COUNTER += 1;
[INFO] [stdout]     |     ^^^^^^^^^^^^ use of mutable static
[INFO] [stdout]     |
[INFO] [stdout]     = note: mutable statics can be mutated by multiple threads: aliasing violations or data races will cause undefined behavior
[INFO] [stdout] note: an unsafe function restricts its caller, but its body is safe by default
[INFO] [stdout]    --> src/kernel/scheduler.rs:168:1
[INFO] [stdout]     |
[INFO] [stdout] 168 | pub unsafe fn scheduler_tick() {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: use of mutable static is unsafe and requires unsafe block
[INFO] [stdout]    --> src/kernel/scheduler.rs:173:8
[INFO] [stdout]     |
[INFO] [stdout] 173 |     if TICK_COUNTER % 100 == 0 {
[INFO] [stdout]     |        ^^^^^^^^^^^^ use of mutable static
[INFO] [stdout]     |
[INFO] [stdout]     = note: mutable statics can be mutated by multiple threads: aliasing violations or data races will cause undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: dereference of raw pointer is unsafe and requires unsafe block
[INFO] [stdout]    --> src/kernel/scheduler.rs:174:26
[INFO] [stdout]     |
[INFO] [stdout] 174 |         let tick_count = *addr_of!(TICK_COUNTER); // Fix mutable static reference
[INFO] [stdout]     |                          ^^^^^^^^^^^^^^^^^^^^^^^ dereference of raw pointer
[INFO] [stdout]     |
[INFO] [stdout]     = note: raw pointers may be null, dangling or unaligned; they can violate aliasing rules and cause data races: all of these are undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning[E0133]: call to unsafe function `kernel::scheduler::task_yield` is unsafe and requires unsafe block
[INFO] [stdout]    --> src/kernel/scheduler.rs:176:9
[INFO] [stdout]     |
[INFO] [stdout] 176 |         task_yield();
[INFO] [stdout]     |         ^^^^^^^^^^^^ call to unsafe function
[INFO] [stdout]     |
[INFO] [stdout]     = note: consult the function's documentation for information on how to avoid undefined behavior
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/unsafe-op-in-unsafe-fn.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_tick_count` is never used
[INFO] [stdout]   --> src/arch/interrupt.rs:48:8
[INFO] [stdout]    |
[INFO] [stdout] 48 | pub fn get_tick_count() -> u32 {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_current_time` is never used
[INFO] [stdout]   --> src/arch/timer.rs:25:8
[INFO] [stdout]    |
[INFO] [stdout] 25 | pub fn get_current_time() -> u32 {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `id`, `priority`, `stack_base`, and `stack_size` are never read
[INFO] [stdout]   --> src/kernel/task.rs:6:9
[INFO] [stdout]    |
[INFO] [stdout]  5 | pub struct Task {
[INFO] [stdout]    |            ---- fields in this struct
[INFO] [stdout]  6 |     pub id: u32,
[INFO] [stdout]    |         ^^
[INFO] [stdout]  7 |     pub priority: u8,
[INFO] [stdout]    |         ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 10 |     pub stack_base: *mut u8,
[INFO] [stdout]    |         ^^^^^^^^^^
[INFO] [stdout] 11 |     pub stack_size: usize,
[INFO] [stdout]    |         ^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `Task` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `Blocked` and `Suspended` are never constructed
[INFO] [stdout]   --> src/kernel/task.rs:18:5
[INFO] [stdout]    |
[INFO] [stdout] 15 | pub enum TaskStatus {
[INFO] [stdout]    |          ---------- variants in this enum
[INFO] [stdout] ...
[INFO] [stdout] 18 |     Blocked,
[INFO] [stdout]    |     ^^^^^^^
[INFO] [stdout] 19 |     Suspended,
[INFO] [stdout]    |     ^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `TaskStatus` has derived impls for the traits `Debug` and `Clone`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `create_task` is never used
[INFO] [stdout]    --> src/kernel/task.rs:144:8
[INFO] [stdout]     |
[INFO] [stdout] 144 | pub fn create_task(id: u32, priority: u8) -> Task {
[INFO] [stdout]     |        ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `delete_task` is never used
[INFO] [stdout]    --> src/kernel/task.rs:155:8
[INFO] [stdout]     |
[INFO] [stdout] 155 | pub fn delete_task(task: &mut Task) {
[INFO] [stdout]     |        ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: structure field `stackPointer` should have a snake case name
[INFO] [stdout]  --> src/kernel/task.rs:8:9
[INFO] [stdout]   |
[INFO] [stdout] 8 |     pub stackPointer: *mut u32,
[INFO] [stdout]   |         ^^^^^^^^^^^^ help: convert the identifier to snake case: `stack_pointer`
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(non_snake_case)]` (part of `#[warn(nonstandard_style)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] For more information about this error, try `rustc --explain E0133`.
[INFO] [stdout] 
[INFO] running `Command { std: "docker" "inspect" "9b5075cca1f13620dc925473bba6bf023de5dbaab136b7f7b5b99e3d6da0645f", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "9b5075cca1f13620dc925473bba6bf023de5dbaab136b7f7b5b99e3d6da0645f", kill_on_drop: false }`
[INFO] [stdout] 9b5075cca1f13620dc925473bba6bf023de5dbaab136b7f7b5b99e3d6da0645f
